package com.lframework.xingyun.basedata.bo.member;

import cn.hutool.core.util.StrUtil;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.math.BigDecimal;
import com.lframework.starter.common.constants.StringPool;
import com.lframework.starter.web.core.bo.BaseBo;
import java.time.LocalDateTime;

import com.lframework.starter.web.core.utils.ApplicationUtil;
import com.lframework.xingyun.basedata.entity.Coupon;
import com.lframework.xingyun.basedata.entity.MemberCoupon;
import com.lframework.xingyun.basedata.service.coupon.CouponService;
import io.swagger.annotations.ApiModelProperty;

import lombok.Data;

/**
 * <p>
 * 用户卡券关系表 QueryBo
 * </p>
 *
 */
@Data
public class QueryMemberCouponBo extends BaseBo<MemberCoupon> {

    /**
     * ID
     */
    @ApiModelProperty("ID")
    private String id;

    /**
     * 会员id
     */
    @ApiModelProperty("会员id")
    private String memberId;

    /**
     * 卡券id
     */
    @ApiModelProperty("卡券id")
    private String couponId;

    /**
     * 过期实际
     */
    @ApiModelProperty("过期实际")
    @JsonFormat(pattern = StringPool.DATE_TIME_PATTERN)
    private LocalDateTime expiryDate;

    /**
     * 状态（0:封存; 1:有效; 2:用尽; 3:过期;）
     */
    @ApiModelProperty("状态（0:封存; 1:有效; 2:用尽; 3:过期;）")
    private Integer couponStatus;

    /**
     * 总值
     */
    @ApiModelProperty("总值")
    private BigDecimal totalValue;

    /**
     * 增值比率
     */
    @ApiModelProperty("增值比率")
    private BigDecimal added;

    /**
     * 可用值
     */
    @ApiModelProperty("可用值")
    private BigDecimal allowValue;

    /**
     * 卡券名称
     */
    @ApiModelProperty("卡券名称")
    private String couponName;

     /**
     * 卡券类型
     */
    @ApiModelProperty("卡券类型")
    private Integer couponType;

    /**
     * 发送方式（0:系统发送; 1:手动发送;）
     */
    @ApiModelProperty("发送方式（0:系统发送; 1:手动发送;）")
    private Integer sendWay;

    @ApiModelProperty("创建时间")
    private LocalDateTime createTime;

    @ApiModelProperty("更新时间")
    private LocalDateTime updateTime;

    public QueryMemberCouponBo() {

    }

    public QueryMemberCouponBo(MemberCoupon dto) {

        super(dto);
    }

    @Override
    public BaseBo<MemberCoupon> convert(MemberCoupon dto) {
        return super.convert(dto);
    }

    @Override
    protected void afterInit(MemberCoupon dto) {
        String couponId1 = dto.getCouponId();
        if (StrUtil.isNotBlank(couponId1)) {
            CouponService couponService = ApplicationUtil.getBean(CouponService.class);
            Coupon coupon = couponService.findById(couponId1);
            this.couponName = coupon.getCouponName();
            this.couponType = coupon.getCouponType();
            this.sendWay = coupon.getSendWay();
        }

    }
}
